package com.hmall.common.exception;

import lombok.Getter;

/**
 * 通用业务异常类
 * 继承自RuntimeException，属于非受检异常
 * 用于在业务逻辑中抛出带错误码的异常
 */
@Getter
public class CommonException extends RuntimeException{

    /**
     * 错误码：用于标识具体异常类型
     * 前端可根据此错误码进行差异化处理
     */
    private final int code;

    /**
     * 构造函数：创建带有错误消息和错误码的业务异常
     * @param message 错误消息，描述异常原因
     * @param code 错误码，标识异常类型
     */
    public CommonException(String message, int code) {
        super(message);
        this.code = code;
    }

    /**
     * 构造函数：创建带有错误消息、原始异常和错误码的业务异常
     * @param message 错误消息
     * @param cause 原始异常，保留异常堆栈信息
     * @param code 错误码
     */
    public CommonException(String message, Throwable cause, int code) {
        super(message, cause);
        this.code = code;
    }

    /**
     * 构造函数：创建基于原始异常和错误码的业务异常
     * @param cause 原始异常
     * @param code 错误码
     */
    public CommonException(Throwable cause, int code) {
        super(cause);
        this.code = code;
    }
}
